<template>
  <view class="refund-detail" :style="viewColor">
    <view class="head">
      <block v-if="type == -1">
        <view class="txt">退款失败</view>
        <view class="time">申请时间：{{ detail.status_time }}</view>
      </block>
      <block v-if="type == 0">
        <view class="txt">审核中</view>
        <view class="time">申请时间：{{ detail.status_time }}</view>
      </block>
      <block v-if="type == 1">
        <view class="txt">请退货并填写物流信息</view>
        <view class="time">申请时间：{{ detail.status_time }}</view>
      </block>
      <block v-if="type == 2">
        <view class="txt">请等待商家收货并退款</view>
        <view class="time"
          >还剩：
          <countDown
            :is-day="true"
            :tip-text="' '"
            :day-text="'天'"
            :hour-text="':'"
            :minute-text="':'"
            :second-text="' '"
            :datatime="datatime"
          ></countDown>
        </view>
      </block>
      <block v-if="type == 3">
        <view class="txt">退款成功，金额 ¥{{ detail.refund_price }}</view>
        <view class="time">申请时间：{{ detail.status_time }}</view>
      </block>
      <block v-if="type == -2">
        <view class="txt">已取消退货申请</view>
        <view class="time">申请时间：{{ detail.status_time }}</view>
      </block>
    </view>
    <!-- 拒绝 -->
    <view class="box" v-if="type == -1">
      <view class="txt">拒绝退款原因</view>
      <view class="des">{{ detail.fail_message }}</view>
    </view>
    <!-- 待退货 -->
    <view class="info-box" v-if="type == 1">
      <view class="title">商家已同意您的退货申请，请尽早退货</view>
      <view class="store-info">
        <view class="text"
          >收货人姓名：<text class="info">{{
            detail.mer_delivery_user
          }}</text></view
        >
        <view class="text"
          >收货人联系方式：<text class="info">{{ detail.phone }}</text></view
        >
        <view class="text"
          >收货人地址：<text class="des">{{
            detail.mer_delivery_address
          }}</text></view
        >
        <view class="red-txt">
          <text class="iconfont icon-zhuyi-copy"></text
          >请按以上收货信息将商品退回
        </view>
      </view>
    </view>
    <!-- 待收货 -->
    <view class="info-box" v-if="type == 2">
      <view class="title">商家收货并验货无误，将操作退款给您</view>
      <view class="store-info">
        <view class="text"
          >收货人姓名：<text class="info">{{
            detail.mer_delivery_user
          }}</text></view
        >
        <view class="text"
          >收货人联系方式：<text class="info">{{ detail.phone }}</text></view
        >
        <view class="text"
          >收货人地址：<text class="des">{{
            detail.mer_delivery_address
          }}</text></view
        >
      </view>
    </view>
    <view class="info-box">
      <view class="title">退款信息</view>
      <view class="product-box">
        <view
          class="product-item"
          v-for="(item, index) in detail.refundProduct"
          :key="index"
        >
          <image
            class="img-box"
            :src="item.product.cart_info.productAttr.image"
            mode=""
            v-if="item.product.cart_info.productAttr.image"
          ></image>
          <image
            class="img-box"
            :src="item.product.cart_info.product.image"
            mode=""
            v-else
          ></image>
          <view class="msg">
            <view class="name line1"
              ><text
                v-if="item.product.cart_info.product_type === 2"
                class="event_name event_bg"
                >预售</text
              >{{ item.product.cart_info.product.store_name }}</view
            >
            <view class="des">{{
              item.product.cart_info.productAttr.sku
            }}</view>
            <view class="price"
              >￥{{
                item.product.product_type == 3
                  ? item.product.cart_info.productAssistAttr.assist_price
                  : item.product.product_type == 4
                  ? item.product.cart_info.activeSku.active_price
                  : item.product.cart_info.productAttr.price
              }}</view
            >
            <view class="num">x {{ item.refund_num }}</view>
          </view>
        </view>
      </view>
    </view>
    <view class="content">
      <view class="item">
        <view class="label">订单编号：</view>
        <view class="txt flex">
          <text>{{ detail.refund_order_sn }}</text>
          <!-- #ifdef H5 -->
          <text
            class="copy copy-data"
            :data-clipboard-text="detail.refund_order_sn"
            >复制</text
          >
          <!-- #endif -->
          <!-- #ifdef MP -->
          <text class="copy" @tap="copy">复制</text>
          <!-- #endif -->
        </view>
      </view>
      <view class="item">
        <view class="label">退款金额：</view>
        <view class="txt flex">
          <text>¥ {{ detail.refund_price }}</text>
        </view>
      </view>
      <view class="item">
        <view class="label">申请件数：</view>
        <view class="txt flex">
          <text>{{ detail.refund_num }}</text>
        </view>
      </view>
      <view class="item">
        <view class="label">申请时间：</view>
        <view class="txt flex">
          <text>{{ detail.create_time }}</text>
        </view>
      </view>
      <view class="item">
        <view class="label">备注说明：</view>
        <view class="txt flex">
          <text>{{ detail.mark ? detail.mark : "" }}</text>
        </view>
      </view>
      <view class="item" style="display: block">
        <view class="label">退款凭证：</view>
        <view class="upload-img">
          <view
            class="img-item"
            v-for="(item, index) in detail.pics"
            :key="index"
          >
            <image :src="item" mode="" @click="loookImg(item, index)"></image>
          </view>
        </view>
      </view>
      <view class="btn-wrapper">
        <block v-if="type == -1">
          <view class="btn gray" @click="goService">联系商家</view>
          <view class="btn" @click="applyAgain(detail)">再次申请</view>
        </block>
        <block v-else-if="type == 1">
          <view class="btn gray" @click="cancelSales">取消售后</view>
          <view class="btn gray" @click="goService">联系商家</view>
          <view class="btn" @click="goPage">退回商品</view>
        </block>
        <block v-else-if="type == 2">
          <view class="btn gray" @click="goService">联系商家</view>
          <view class="btn" @click="go">查看物流</view>
        </block>
        <block v-else-if="type == 0">
          <view class="btn gray" @click="cancelSales">取消售后</view>
          <view class="btn" @click="goService">联系商家</view>
        </block>
        <block v-else>
          <view class="btn" @click="goService">联系商家</view>
        </block>
      </view>
    </view>
  </view>
</template>
<script>
import { refundDetail, refundCancelApi } from "@/api/order.js"
import ClipboardJS from "@/plugin/clipboard/clipboard.js"
import countDown from "@/components/countDown"
import { mapGetters } from "vuex"
export default {
  components: {
    countDown
  },
  computed: {
    ...mapGetters(["viewColor"])
  },
  data() {
    return {
      type: 0,
      refund_order_id: 0,
      detail: "",
      datatime: 0
    }
  },
  onLoad(options) {
    uni.setNavigationBarTitle({
      title: "退款详情"
    })
    this.refund_order_id = options.id
    this.getDetail()
  },
  onReady: function () {
    // #ifdef H5
    this.$nextTick(function () {
      const clipboard = new ClipboardJS(".copy-data")
      clipboard.on("success", () => {
        this.$util.Tips({
          title: "复制成功"
        })
      })
    })
    // #endif
  },
  methods: {
    //查看大图
    loookImg(item, index) {
      uni.previewImage({
        urls: this.detail.pics,
        current: this.detail.pics[index]
      })
    },
    getDetail() {
      refundDetail(this.refund_order_id).then((res) => {
        // status 0审核中 1待发货 2待收货 3已退款 -1已拒绝
        this.type = res.data.status
        this.detail = res.data
        this.datatime = res.data.auto_refund_time
      })
    },
    goPage() {
      uni.navigateTo({
        url: "/pages/users/refund/goods/index?id=" + this.detail.refund_order_id
      })
    },
    applyAgain(item) {
      uni.navigateTo({
        url: `/pages/order_details/index?order_id=${item.refundProduct[0].product.order_id}`
      })
    },
    go() {
      uni.navigateTo({
        url: `/pages/users/refund/logistics?orderId=${this.detail.refund_order_id}`
      })
    },
    /**
     *
     * 剪切订单号
     */
    // #ifndef H5
    copy: function () {
      let that = this
      uni.setClipboardData({
        data: this.detail.refund_order_sn
      })
    },
    // #endif
    // 客服
    goService() {
      uni.navigateTo({
        url: `/pages/chat/customer_list/chat?mer_id=${this.detail.mer_id}&uid=${this.detail.uid}&refund_order_id=${this.detail.refund_order_id}`
      })
    },
    // 取消售后
    cancelSales() {
      let that = this
      uni.showModal({
        content: "确定要取消售后？",
        success: function (res) {
          if (res.confirm) {
            refundCancelApi(that.detail.refund_order_id).then((res) => {
              if (res.status === 200) {
                that.$util.Tips({
                  title: res.message
                })
                that.getDetail()
              }
            })
          } else if (res.cancel) {
            console.log("用户点击取消")
          }
        }
      })
    }
  }
}
</script>

<style lang="scss">
.refund-detail {
  .head {
    display: flex;
    flex-direction: column;
    justify-content: center;
    height: 150rpx;
    padding: 0 30rpx;
    color: #fff;
    background-color: #666666;
    font-size: 30rpx;
    .txt {
      font-weight: bold;
    }
    .time {
      margin-top: 10rpx;
      font-size: 24rpx;
      opacity: 0.8;
      .time {
        display: inline-block;
        width: 600rpx;
        ::v-deep .red {
          color: #fff;
        }
      }
    }
  }

  .info-box {
    margin-top: 12rpx;
    background-color: #fff;
    .title {
      padding: 0 32rpx;
      line-height: 86rpx;
      border-bottom: 1px solid #f0f0f0;
      color: #282828;
    }
    .product-box {
      .product-item {
        display: flex;
        padding: 25rpx 30rpx;
        .img-box {
          width: 130rpx;
          height: 130rpx;
          border-radius: 16rpx;
        }
        .msg {
          position: relative;
          display: flex;
          flex-direction: column;
          justify-content: space-between;
          width: 440rpx;
          margin-left: 26rpx;
          .name {
            font-size: 28rpx;
            color: #282828;
          }
          .des {
            font-size: 20rpx;
            color: #868686;
          }
          .price {
            font-size: 26rpx;
            color: var(--view-priceColor);
          }
          .num {
            position: absolute;
            right: -80rpx;
            top: 4rpx;
            color: #868686;
            font-size: 26rpx;
          }
        }
      }
      .event_name {
        display: inline-block;
        margin-right: 9rpx;
        color: #fff;
        font-size: 20rpx;
        padding: 0 8rpx;
        line-height: 30rpx;
        text-align: center;
        border-radius: 6rpx;
      }
    }

    .event_bg {
      background: #ff7f00;
    }
    .store-info {
      padding: 30rpx;
      .des {
        margin-top: 10rpx;
        font-size: 26rpx;
        color: #868686;
      }
      .red-txt {
        display: flex;
        align-items: center;
        margin-top: 10rpx;
        color: $theme-color;
        font-size: 24rpx;
        .iconfont {
          font-size: 30rpx;
          margin-right: 5rpx;
          margin-top: 6rpx;
        }
      }
    }
  }
  .content {
    margin-top: 12rpx;
    padding: 30rpx 30rpx 0;
    background-color: #ffffff;
    .item {
      display: flex;
      justify-content: space-between;
      margin-bottom: 30rpx;
      .txt {
        justify-content: flex-end;
        align-items: center;
        width: 450rpx;
        color: #868686;
        text-align: right;
        .copy {
          display: flex;
          align-items: center;
          justify-content: center;
          width: 80rpx;
          height: 34rpx;
          margin-left: 20rpx;
          border: 1px solid #666666;
          border-radius: 17rpx;
          font-size: 20rpx;
          color: #333;
        }
      }
      &:last-child {
        margin-bottom: 0;
      }
      .upload-img {
        display: flex;
        flex-wrap: wrap;
        margin-top: 20rpx;
        .img-item {
          position: relative;
          width: 156rpx;
          height: 156rpx;
          margin-right: 23rpx;
          margin-top: 20rpx;
          &:nth-child(4n) {
            margin-right: 0;
          }
          image {
            width: 156rpx;
            height: 156rpx;
            border-radius: 8rpx;
          }
        }
      }
    }
    .btn-wrapper {
      position: relative;
      display: flex;
      justify-content: flex-end;
      align-items: center;
      height: 100rpx;
      button {
        font-size: 28rpx;
      }
      .btn {
        width: 176rpx;
        height: 60rpx;
        display: flex;
        align-items: center;
        justify-content: center;
        margin-left: 20rpx;
        background: var(--view-theme);
        border-radius: 30rpx;
        color: #fff;
      }
      .gray {
        background: transparent;
        border: 1px solid #eee;
        color: #aaaaaa;
      }
      &:after {
        content: " ";
        position: absolute;
        top: 0;
        left: 50%;
        width: 690rpx;
        height: 1px;
        margin-left: -345rpx;
        background-color: #f0f0f0;
      }
    }
  }
  .box {
    margin-top: 12rpx;
    padding: 25rpx 30rpx;
    background-color: #fff;
    font-size: 30rpx;
    color: #282828;
    .des {
      margin-top: 5rpx;
      font-size: 26rpx;
      color: #868686;
    }
  }
}
::v-deep.styleAll {
  color: #fff;
}
</style>
